1. Field of the Invention
The present invention relates generally to bi-polar data decoding/encoding and, more particularly, to a B3ZS decoder which is capable of identifying true zero-substitution patterns and recognizing certain corrupted zero substitution patterns.
2. Description of Related Art
Bipolar coding is a form of ternary coding in which a binary signal is encoded by alternating the sense (positive/negative) of the logical "ones" of the binary signal. Thus binary "zero" bits are represented as the absence of a pulse, but binary "one" bits are represented by either positive or negative pulses (e.g., +/-3 Volts), the polarity being changed at every successive occurrence of a "one" bit. Since the coding only changes the polarity of logic ones, signalling rate remains unchanged.
The alternation of polarity provides a simple way of in-service performance monitoring. That is, since the polarity of the "ones" is alternated at each consecutive "one" bit, any isolated error, whether deletion or addition of a pulse, causes a violation of the alternating polarity. Such a violation is called a bipolar violation (BPV). Therefore, a monitoring system can detect an error whenever two consecutive "ones" have the same polarity (e.g., two consecutive +3 volts).
In addition to communicating the data, the received signal is also used by the receiving station to generate a clock signal for synchronization. The received signal is sent to a clock circuit which generates clock pulses by sensing the signal's level changes. However, since the clock signal is generated based on level changes, its accuracy may be effected when the received signal contains a long string of zeros.
In order to avoid transmission of strings of zeros, line coding methods are used which replace long strings of zeros with a sequence of symbols forming a substituted word. One such family of codes is known as bipolar with N-zero substitution (BNZS). For example, the B6ZS code allows strings of up to five zeros, but replaces strings of six zeros with a specific word. The definitions of various BNZS codes can be found in ANSI.RTM. T1.102-1993, Revision of ANSI.RTM. T1.102-1987.
A fundamental requirement for the substituted word is that it must have some characteristic which allows it to be easily and reliably identified, so that it can eventually be removed and replaced by the original string of zeros. The characteristic property used in BNZS coding is the occurrence of multiple BPVs. That is, the strings of zeros is replaced with a word which induces several BPVs. Since the probability of occurrence of more than one BPV in a block of N pulses is small, when such a multiple violation is detected, it may be safely assumed to be a substitution sequence by the BNZS decoder and the word can be replaced with the appropriate string of zeros.
The B8ZS line coding is currently used, for example, for DS1 and DS1C telecommunication channels, and the B6ZS for DS2 telecommunication channels. The B6ZS replaces a string of six zeros with a word which creates multiple BPVs, but allows strings of up to five zeros. Similarly, the B8ZS replaces a string of eight zeros with a word which creates multiple BPVs, but allows strings of up to seven zeros. However, in time synchronization sensitive systems, strings of five zeros may be problematic. Therefore, for such systems it is preferable to use a B3ZS coding. That is, to ensure accurate synchronization, no more than two consecutive zeros are allowed in such systems.
Although the B3ZS provides higher density of 1's by allowing strings of no more than two zeros, it does not support multiple BPVs in a single replacement word. That is, the string of three zeros is replaced by a word which induces only one violation. Thus, typical B3ZS decoders identify three-zero-substitution patterns by detecting the occurrence of any single BPV, regardless of their context. For example, the RC-28D B3ZS decoder designed by NEC-Japan searches for xxV and substitutes 0.times.0 (x being either a one or a zero and V being a logical one of the same polarity as the previous logical one). The Wandell & Goltermann design (WG-PF5) searches for x0V and substitutes 000 (Wandell & Goltermann, Description and Operating Manual, PF-5, BN2110, Edition 4021/11.90).
In error-free environments, reliance on a single BPV presents no problem, as every occurrence of a BPV is used as the indication of a substitution pattern. In real environments, however, where errors occur with a statistical probability that is non-zero, error-multiplication results, where the number of errors leaving the B3ZS decoder is greater than the number of errors it receives. As stated above, any isolated error, whether addition or deletion of a "one" bit, causes a BPV. Accordingly, the above-mentioned B3ZS decoders will identify the BPV associated with the isolated error as an indication of a substitution pattern and will substitute two or three zeros. Consequentially, downstream equipment receive a degraded signal. Moreover, downstream circuits that must synchronize on the decoded signal (e.g., demultiplexers, VMRs) can lose synchronization sooner and take longer to resynchronize, disrupting communication channels for longer periods of time.